/*
    子数组最大累加和问题与扩展-下

    前置知识: 
    讲解005-对数器
    讲解046-构建前缀信息的技巧
    讲解054-单调队列，一定要掌握，本节课题目6需要，后续讲“多重背包的单调队列优化”也需要
    讲解070-子数组最大累加和问题与扩展-上
    【必备】课程的动态规划大专题从讲解066开始，建议从头开始学习会比较系统


    本节课是上节课内容的继续，见识更多与累加和相关的题目
    而且有4个题来自真实大厂笔试题，都提供了对数器的验证代码来确保正确
    很多解法的思路非常巧妙

    ================================================

    题目1
    乘积最大子数组
    给你一个double类型数组 nums
    请你找出数组中乘积最大的非空连续子数组
    并返回该子数组所对应的乘积
    测试链接 : https://leetcode.cn/problems/maximum-product-subarray/

    注意：
    题目中虽然给定的是int类型的数组
    但讲述的方法是int、double类型的数组都能正确的做法

    ================================================

    题目2
    子序列累加和必须被7整除的最大累加和
    给定一个非负数组nums，
    可以任意选择数字组成子序列，但是子序列的累加和必须被7整除
    返回最大累加和
    对数器验证

    ================================================

    题目3
    魔法卷轴
    给定一个数组nums，其中可能有正、负、0
    每个魔法卷轴可以把nums中连续的一段全变成0
    你希望数组整体的累加和尽可能大
    卷轴使不使用、使用多少随意，但一共只有2个魔法卷轴
    请返回数组尽可能大的累加和
    对数器验证

    ================================================

    题目4
    三个无重叠子数组的最大和
    给你一个整数数组 nums 和一个整数 k
    找出三个长度为 k 、互不重叠、且全部数字和（3 * k 项）最大的子数组
    并返回这三个子数组
    以下标的数组形式返回结果，数组中的每一项分别指示每个子数组的起始位置
    如果有多个结果，返回字典序最小的一个
    测试链接 : 
    https://leetcode.cn/problems/maximum-sum-of-3-non-overlapping-subarrays/

    ================================================

    题目5
    可以翻转1次的情况下子数组最大累加和
    给定一个数组nums，
    现在允许你随意选择数组连续一段进行翻转，也就是子数组逆序的调整
    比如翻转[1,2,3,4,5,6]的[2~4]范围，得到的是[1,2,5,4,3,6]
    返回必须随意翻转1次之后，子数组的最大累加和
    对数器验证

    ================================================

    题目6
    删掉1个数字后长度为k的子数组最大累加和
    给定一个数组nums，求必须删除一个数字后的新数组中
    长度为k的子数组最大累加和，删除哪个数字随意
    对数器验证

    注意：
    确保 讲解054-单调队列已经掌握，不然会听不懂

*/